#pragma once

typedef unsigned char u8;
typedef unsigned short u16;

// Input Reports
#define WIIMOTE_REPORT_IN_BATTERY 0x20
#define WIIMOTE_REPORT_IN_DATA_BUTTONS 0x30
#define WIIMOTE_REPORT_IN_DATA_BUTTONS_ACCEL_IR 0x33

// Output Reports
#define WIIMOTE_REPORT_OUT_LED 0x11
#define WIIMOTE_REPORT_OUT_MODE 0x12
#define WIIMOTE_REPORT_OUT_IR1 0x13
#define WIIMOTE_REPORT_OUT_BATTERY 0x15
#define WIIMOTE_REPORT_OUT_WRITE 0x16
#define WIIMOTE_REPORT_OUT_IR2 0x1A

// LEDs
#define WIIMOTE_LED_1 0x10
#define WIIMOTE_LED_2 0x20
#define WIIMOTE_LED_3 0x40
#define WIIMOTE_LED_4 0x80

// Buttons
#define WIIMOTE_BUTTON_TWO 0x0001
#define WIIMOTE_BUTTON_ONE 0x0002
#define WIIMOTE_BUTTON_B 0x0004
#define WIIMOTE_BUTTON_A 0x0008
#define WIIMOTE_BUTTON_MINUS 0x0010
#define WIIMOTE_BUTTON_HOME 0x0080
#define WIIMOTE_BUTTON_LEFT 0x0100
#define WIIMOTE_BUTTON_RIGHT 0x0200
#define WIIMOTE_BUTTON_DOWN 0x0400
#define WIIMOTE_BUTTON_UP 0x0800
#define WIIMOTE_BUTTON_PLUS 0x1000